<?php
/**
 * 定义f:checkbox控件
 * 
 * 如果当前控件没有定义name属性，而且在f:checkboxes中，则当前控件将继承f:checkboxes的name属性，如：
 * <code>
 * <f:checkboxes name="lang">
 * 	<f:checkbox value="1"/> PHP  <f:checkbox value="2"/> Java
 * </f:checkboxes>
 * </code>
 * 那么绘制后的模板内容为：
 * <code>
 * 	<input type="checkbox name="lang[0]" value="1"/> PHP <input type="checkbox name="lang[1]" value="2"/> Java
 * </code>
 *
 * @package if
 * @subpackage module.ui
 * @since 1.1.0
 */
class UIFormCheckbox extends UIFormElement {
	protected $tpl = "form_checkbox";
	
	function _after_parse() {
		parent::_after_parse();
		$this->setAttr("type", "checkbox");
		
		//从f:checkboxes继承属性
		$checkboxes = $this->parent("f:checkboxes");
		if ($checkboxes) {
			//name
			if ($checkboxes->attr("name") && !$this->attr("name")) {
				$this->setAttr("name", $checkboxes->attr("name") . "[]");
			}
		}
		
		//是否checked
		$name = $this->attr("name");
		$values = $this->request($this->attr("name"), true);
		if ((is_array($values) && in_array($this->attr("value"), $values)) || ($this->attr("value") == $values)) {
			if ($this->can("redisplay")) {
				$this->setAttr("checked", "checked");
			}
		}
	}
}

?>